Освен това данните са само - описващи се (
self-
describing) и лесни за манипулиране в
различни формати.
XML е идеалния начин за бизнеса да
подава и получава данни. Microsoft e направил по - голямата част от .
NET XML базирана, и това е очебийно с включването
на два класа:
XmlReader и
XmlWriter. Microsoft е създал два обекта за изпълнение на тези два класа, наречени
XmlTextReader и
XmlTextWriter. Тези класове могат да бъдат
намерени в пространството от имена
System.
Xml. Работейки заедно, .
NET и
ADO.
NET могат да четат и записват данни
по един и същ маниер независимо дали това са XML или релативни данни. Microsoft е създал и обект
XmlDataDocument за свързване на релативни данни от
DataSet с
XML Document Object Model (
DOM - документен обектен модел). Ако трябва да работите с
XML,
XmlDataDocument може да
зареди релативни или
XML данни и да ги манипулира. Ако
XmlDataDocument зарежда релативни данни, той използва
DataSet като техен източник. След като релативните данни се заредят от
XmlDataDocument, те се достигат чрез .
NET XML класове и функции. Това, което ще направи .
NET за вас е да валидизира вашият
XML според
XML схема. Едва когато вашата база данни има
схема, дефинираща таблици, колони и т.н.
XML схемата дефинира структурата на
XML документа. По този начин вие можете да споделите схемата с други и когато те
вземат
XML документ от
вас, ще го сравнят
със схемата. Би било чудесно ако всички споделяха една схема, щеше да се получи
универсален формат (
DataFormat). Но е стъпка в правилната посока.
Забележка
Има няколко типа от
XML
схеми, включая
DTDs (Document Type
Definitions). Стандартът
XSD е от
март 16, 2001, и е това, което произвежда Visual Studio.NET. Вие вече създадохте
XML схема; в този случай
XSD файл.
Фактически, ако погледнете прозореца Solution Explorer, ще видите два
XSD файла:
dsDascaly.
xsd и
dsDascaly.
xsd. Кликнете
два пъти върху файл
dsDascaly.
xsd, ще видите нова страница (tab) добавена
към главната работна област. Първият изглед (
view) на
XSD е изгледът
схема, който показва формата на на данните (
DataFormat)
изглеждащ също като таблица в база данни. В най-долната част на този прозорец
има два бутона:
Schema и
XML. Виж фигура 102.
Фигура 102 Изглед
XSD.
Ако кликнете бутон
XML, ще
видите актуалната
XML схема, която е генерирана за вас от Visual Studio.NET. Ето част от тази схема:
<?xml version="1.0" standalone="yes"?>
<xs:schema id="dsDascaly"
targetNamespace="http://www.tempuri.org/dsDascaly.xsd"
xmlns:mstns="http://www.tempuri.org/dsDascaly.xsd"
xmlns="http://www.tempuri.org/dsDascaly.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:element name="dsDascaly" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Dascali">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string" minOccurs="0" />
<xs:element name="LastName" type="xs:string" minOccurs="0" />
<xs:element name="HomePhone" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
Ако направите анализ на този код, ще забележите името на таблицата
(<xsd: element name="Dascaly">) нейните полета и техният тип данни и
накрая на този отрязък от код, XSD дефинира първичен ключ.
-
Дизайнерът XML Designer
Можете да създадете
XSD схема от стартовата линия, използвайки
XML Designer. Във вашия проект
IzuchavaneVBDanni, кликнете върху бутон
Add New Item. В диалоговия прозорец
Add New Item, се уверете, че е селектирано
Local Project Items и след това изберете
XML Schema. Именовайте схемата
University.
xsd.
Ще ви поздрави празна форма. Ако кликнете в Toolbox, ще забележите, че
съществува страница (tab) с етикет XSD Schema. Довлечете
простия тип (Type) над дизайнера. Това ще прибави графично представяне
на простия тип. Прост
тип (
simple type) е само тип базиран на базата на типовете в
XML, като
strings,
time,
integers. При деклариране на прост тип
има лимити като размер на полето например. Сменете името на простия тип, който
току що добавихте, на
stState. Оставете
типа като стринг (
string), и
в прозореца отдолу
stState, изберете
дължина. Нека дължината да е 2. Сега вече имаме
стандартен стрингов тип с лимит два символа. Сега кликнете и довлечете
комплексен тип (Type) от лентата с инструменти
Toolbox. Комплексен тип (
complex type) действа основно като подтип, който може да бъде
използван и от други елементи в схемата. Именовайте
комплексния тип
Person. Добавете
атрибут
Name (виждате A за "attribute") от тип стринг. Добавете
атрибути
Address и
City, двата от тип стринг. Накрая,
добавете атрибут
State, но
този път от тип
stState, който
е простия тип, който създадохте. Сега е време да създадете релативна таблица (
relational table). Довлечете елемент от
Toolbox към дизайнера. Именовайте елемента
Student. Сега трябва да дефинирате
полетата на таблицата.
Person беше създадена като комплексен тип, защото таблица
Professor ще използва същата структура на
Person. Сменете
A в
първата колона на
E за
елемент, и след това напишете
StudentID, и го направете от тип
int. След това добавете друг
елемент с име
StudentInfo, но
го направете тип
Person. Дизайнерът
автоматично ще добави референция към елемента с име
StudentInfo. Фигура 103 показва как изглежда
Designer.
Това e много лесен начин да си създадете схема, нали? О да, ако
имате съществуваща таблица в базата данни. Просто
създавате нова
XSD схема във
вашия проект, и чрез влачене и пускане
на таблица от Server Explorer го правите. Всъщност Server Explorer генерира
XSD за
вас от дефиницията на таблицата. Какво
можете да правите с тази
XSD схема,
след като вече я имате? Може да я заредите както
DataSet. Фактически ако сте дали
правилния път (
path) в кода и
го стартирате, системата ще ви докладва,
че името на
DataSet е
University. След това бихте могли да добавите записи към
таблицата в паметта, или да съедините данните от
друго
DataSet , което актуално подава данните от подлежащата база
данни.
Dim xdd As New
XmlDataDocument()
xdd.LoadDataSetMapping("c:...University.xsd")
MsgBox(xdd.DataSet.DataSetName.ToString)
OSQL -S
IK-NK0YFP6JWVL1VSdotNET -E/i db_attachpayables.sql
Log_shipping_databases
Разгледайте кода на програма
SqlXMLExample:
-
Код
на
Form1.vb:
Imports
System
Imports
System.Data.SqlClient
Public
Class Form1
Inherits System.Windows.Forms.Form
Dim bDataAdded As Boolean = False
#Region " Windows Form
Designer generated code "
Фигура103 Дизайнер XML Designer след като сте създали вашата схема.
Private Sub btnPoluchavam_Click(ByVal
sender As System.Object, _
ByVal e As
System.EventArgs) Handles btnPoluchavam.Click
If bDataAdded = True Then Exit Sub
Try
SqlDataAdapter1.Fill(DataSet11, "Vendors")
With dgDataGrid
.CaptionText = "Examining XML"
.DataSource = DataSet11
.AllowSorting = True
.AlternatingBackColor =
System.Drawing.Color.Bisque
.SetDataBinding(DataSet11, "Vendors")
End With
'--актуализиране (Update) на XML tab
txtXML.Text
= DataSet11.GetXml
'-- актуализиране (Update) на XML
Schema tab
txtXMLSchema.Text = DataSet11.GetXmlSchema
bDataAdded = True
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
End Sub
Private Sub
btnActualization_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles
btnActualization.Click
Try
dgDataGrid.Update()
SqlDataAdapter1.Update(DataSet11)
Catch ex As
SystemException
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub
btnZapisXML_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles
btnZapisXML.Click
DataSet11.WriteXml("C:VB .NET ProjectsGlava10XMLData _
SQLXML.xml", XmlWriteMode.WriteSchema)
DataSet11.WriteXml("C:VB .NET
ProjectsGlava10XMLData _ SQLChanges.xml ", XmlWriteMode.DiffGram)
End Sub
End Class
има ли вариант някои да ми прати този проектен файл заедно с кода?